1. Field of the Invention
This invention pertains generally to security-related features in a computer system. More particularly this invention is directed to a new system and method for decrypting messages that have been transmitted across multiple data segments.
2. The Prior Art
The problems of security in a typical network-based transaction are well known. For each transaction involving private personal or financial data over a public network such as the internet, it is desirable to provide both authentication and privacy of the data as the data goes between two interacting nodes. A typical configuration having a prior art solution to this problem is shown in FIG. 1.
Nodes 100 and 102 are connected through internet cloud 104 to a server system 106. There may be any number of nodes connected to server 106, as indicated by the ellipses between nodes 100 and 102. Server system 106 will typically have at least one machine 108 dedicated to serving requests coming in from internet 104 (for larger installations there may be a gateway and a large set of servers), coupled by an internal network 110 to secondary storage 112, where data resides that will be used to service requests.
Machine 108 will typically be handling transactions requiring security using an SSL or TLS based protocol in its protocol stack. The network protocol stack in machine 108 is shown to the right of a portion of the standard ISO network model. ISO physical layer L1114 and data link layer L2116 both map to a set of lower level protocols 126. ISO network layer L3118 maps to IP layer 128. ISO transport layer L4120 maps to TCP layer 130. ISO session layer L5122 maps to session protocol 132, and ISO application layer L6124 maps to SSL record protocol 134, SSL handshake protocol 136, and the application 138.
The SSL protocols are well known in the art, and involve a session initialization portion which uses the SSL handshaking protocol together with the creation, transmitting, receiving, and decoding of SSL records over a network using the SSL record protocol. After the SSL layers 134 and 136 have done their work, the plaintext messages are sent up the stack to application 138.
SSL records may be up to 16 Kbytes in size. An SSL record corresponds to one authenticated and encrypted piece of data. If the underlying encryption/authentication algorithm is block oriented (such as DES, SHA, MD5 etc), then an SSL record will be in units of the block size required by the encryption algorithm (i.e., if the underlying cipher algorithm is a block cipher using 8 byte blocks, then the SSL record will some multiple of 8 bytes). Otherwise, the SSL records may be any convenient size up to 16 Kbytes where the size is determined by the system creating them.
The system that receives the SSL records has to accept what is sent, and, having no a priori knowledge of the arriving record's length, must always be ready to handle any record size up to and including 16 Kbytes. These varying length SSL records will be sent to the target node in a varying number of TCP segments, also of varying length.
Because the receiving node doesn't know the length of the incoming SSL record which is arriving over a multitude of TCP segments, coupled with the fact that there are decryption dependencies between bytes in a record, receiving nodes have had to reconstruct the entire record before proceeding with decryption. This requirement has lead to a serious bottleneck when attempts have been made to speed up the overall encryption/decryption process. The reconstruction of records from TCP segments, and then the decrypting of the reconstructed records is essentially a sequential process. So far, the reconstruction of the SSL records and then passing them of to be decrypted in a form the decryption engine can understand has been handled by software.
In order to make any significant gain in the speed at which this process can be carried out, a new solution to this bottleneck at the record reconstruction stage must be found. Thus, there is a profoundly felt need to find a new solution to SSL record reconstruction and decryption.